/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
 */
package com.yxw.yxnet_cd_center.customer_service.service;

import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import com.yxw.yxnet_cd_center.customer_service.dto.SessionTalkRecordDTO;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsFlockUserEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsUserEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsUserWorkEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxcscClientFiledServiceEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.TechFlockUserEntity;
import com.yxw.yxnet_cd_center.customer_service.dto.YxcscFlockTalkRecordDTO;
import com.yxw.yxnet_cd_center.customer_service.entity.YxCsWorkflowEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxcscServiceTalkRecordEntity;
import com.yxw.yxnet_cd_center.customer_service.entity.YxcscFlockTalkRecordEntity;
import com.yxw.yxnet_cd_center.customer_service.vo.MemberVo;
import java.util.List;

/**
 * 会话所有消息处理
 * @author hjx
 * @date 2023.09.22
 */
public interface IMsgProcessService {
    /*** 
    * 客户申请服务后
    * @param oYxcscClientFiledServiceDTO
    * @return BaseResult
    **/
    public BaseResult sendSystemMsgByClientFiled(YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity,List<MemberVo> list);
    /*** 
    * 客户发送聊天记录给客服
    * @param sendTalkMsgByClient
    * @param message
    * @return BaseResult
    **/
    public BaseResult sendTalkMsgByClient(YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity,YxCsUserEntity oYxCsUserEntity,YxcscServiceTalkRecordEntity oYxcscServiceTalkRecordEntity);
    
    /*** 
    * 客服发送聊天记录给客户
    * @param sendTalkMsgByClient
    * @return BaseResult
    **/
    public BaseResult sendTalkMsgByCustomer(YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity,YxcscServiceTalkRecordEntity oYxcscServiceTalkRecordEntity);
    /*** 
    * 客服发送群聊天信息到群
    * @param flockId
    * @param UserId
    * @param nickName
    * @param message
    * @param sendTime
    * @return BaseResult  YxcscFlockTalkRecordEntity oYxcscFlockTalkRecordEntity
    **/
    public BaseResult sendFlockTalkMsgByCustomer(YxcscFlockTalkRecordEntity oYxcscFlockTalkRecordEntity);
    //public BaseResult sendFlockTalkMsgByCustomer(YxcscFlockTalkRecordDTO oYxcscFlockTalkRecordDTO,Long sendTime,Long msgId);
    /*** 
    * 客服将某个服务指派给某个组
    * @param sender
    * @param reciver
    * @param oYxcscClientFiledServiceEntity
    * @return BaseResult
    **/
    public BaseResult customerSetServiceToCustomer(YxCsUserEntity sender,YxCsUserEntity reciver,YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity);
    
    /*** 
    * 客服将某个服务指派给某个组
    * @param sender
    * @param reciver
    * @param oYxcscClientFiledServiceEntity
    * @return BaseResult
    **/
    public BaseResult customerSetWorkflowToTechnicalSupportFlock(YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity,YxCsWorkflowEntity oYxCsWorkflowEntity,YxcscFlockTalkRecordEntity oYxcscFlockTalkRecordEntity,List<TechFlockUserEntity> oListTechFlockUserEntity);
    
    
    
    /*** 
    * 客服邀请客户对本次服务评分接口
    * @param oYxCsUserEntity  用户
    * @param oYxcscClientFiledServiceEntity  服务
    * @return BaseResult
    **/    
    public BaseResult customerInviteClientScore(YxCsUserEntity oYxCsUserEntity,YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity);   
    
    
    /*** 
    * 技术支持组成员申请接受技术支持/点击接收
    * @param userId
    * @param flockId
    * @param workflowId
    * @return BaseResult
    **/  
    public BaseResult technicalSupportAcceptWorkFlow(YxCsWorkflowEntity oYxCsWorkflowEntity);
    
        /*** 
    * 技术支持组成员完成技术支持
    * @param oTechnicalSupportFinishWorkFlowDTO
    * @return BaseResult
    **/
    public BaseResult technicalSupportFinishWorkFlow(YxCsWorkflowEntity oYxCsWorkflowEntity,YxcscFlockTalkRecordEntity oYxcscFlockTalkRecordEntity);
    /**
     * 客户对服务的评分接口
     * @param ClientSendTalkDTO 会话内容
     * @return BaseResult
    **/
    public BaseResult serviceScore(YxcscClientFiledServiceEntity oYxcscClientFiledServiceEntity);
    
    /*** 
    *客服撤回聊天记录
    * @param recordId 聊天记录Id
    * @param sssionId 会话Id
    * @return BaseResult
    **/
    public BaseResult customerRevokeServiceTalkRecord(Long recordId,String sssionId);
    
 
    /*** 
    *客户撤回聊天记录
    * @param recordId 聊天记录Id
    * @param sssionId 会话Id
    * @return BaseResult
    **/
    public BaseResult clientRevokeServiceTalkRecord(Long recordId,Long customerId);    
    
    /*** 
    *系统用户撤回群聊天记录
    * @param recordId 聊天记录Id
    * @param flockId 群Id
    * @param flockType 群类别:0正常分流规则的群,1技术支持组
    * @param list 群成员列表
    * @return BaseResult
    **/
    public BaseResult userRevokeFlockTalkRecord(Long recordId, Long flockId,Integer flockType,List<MemberVo> list);   
    
}
